#include <iostream>
#include <string>

using namespace std;

// 遍历字符串的过程中，只要让 i += (2 * k)，i 每次移动 2 * k 就可以了
string reverseStr(string s, int k) {
    for (int i {}, len { static_cast<int>(s.size()) }; i < len; i += 2 * k) {
        // 注意有边界超过字符串长度时，就取字符串长度 - 1
        int left { i }, right { i + k > len ? len - 1 : i + k - 1 };
        while (left < right) {
            swap(s[left++], s[right--]);
        }
    }

    return s;
}

int main() {
    string str1 { "abcdefg" };
    int k = 2;
    cout << "origin: " << str1 << "\n";
    cout << "after: " << reverseStr(str1, k) << "\n";

    return 0;
}